package Colecciones;

import Modelo.EjecutaConsulta;
import Modelo.Fila;
import java.io.PrintStream;
import java.util.Vector;

public class Listados
{
  public static Vector getListadoTitulos(int p_reg)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PS_EXT_DEGREE TIT_PER, PS_DEGREE_TBL TIT";

      String consulta = " SELECT  EMPLID,  EXT_ORG_ID INSTITUCION_EGRESADO,  DESCRFORMAL PROFESION,  DEGREE_DT FECHA_GRADO" + strTablas + " WHERE" + "  TIT_PER.DEGREE = TIT.DEGREE";

      if (p_reg > 0)
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.getListadoTitulos " + e.toString());
    }
    return datos;
  }

  public static Vector getListadoCargos(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT    US_SOC_CD CONSECUTIVO,   TRIM(DESCR) NOMBRE FROM   PS_US_SOC_TBL A WHERE EFFDT = (   SELECT     MAX(EFFDT)   FROM     PS_US_SOC_TBL B    WHERE     A.US_SOC_CD = B.US_SOC_CD     AND B.EFFDT <= SYSDATE) ";

      if (p_reg > 0)
        consulta = consulta + "   AND ROWNUM <= " + String.valueOf(p_reg);

      consulta = consulta + " ORDER BY TRIM(DESCR)";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.getListadoCargos " + e.toString());
    }
    return datos;
  }

  public static Vector getListadoCargos(String strNombre, int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT    US_SOC_CD CONSECUTIVO,   TRIM(DESCR) NOMBRE FROM   PS_US_SOC_TBL A WHERE EFFDT = (   SELECT     MAX(EFFDT)   FROM     PS_US_SOC_TBL B    WHERE     A.US_SOC_CD = B.US_SOC_CD     AND B.EFFDT <= SYSDATE) " +
              "AND LOWER(DESCR) LIKE LOWER('"+strNombre+"%')";

      if (p_reg > 0)
        consulta = consulta + "   AND ROWNUM <= " + String.valueOf(p_reg);

      consulta = consulta + " ORDER BY TRIM(DESCR)";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.getListadoCargos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector datosEvento(String p_crse_id)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT  CT.CRSE_ID CONSECUTIVO,  CT.EFFDT FECHA_EFECTIVA,  CT.DESCR NOMBRE_CORTO,  CT.COURSE_TITLE_LONG NOMBRE_LARGO,  CT.EFF_STATUS ESTADO_EVENTO,  CL.INSTITUTION INSTITUCION,  CL.ACAD_GROUP GRUPO_ACADEMICO,  CL.CATALOG_NBR,  CL.START_DT FECHA_INICIAL,  CL.END_DT FECHA_FIN FROM  PS_CRSE_CATALOG CT,  PS_CLASS_TBL CL WHERE  CT.CRSE_ID = CL.CRSE_ID  AND CT.CRSE_ID = '" + p_crse_id + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.listadoEventos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoEventos(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT  CT.CRSE_ID CONSECUTIVO,  CT.EFFDT FECHA_EFECTIVA,  CT.DESCR NOMBRE_CORTO,  CT.COURSE_TITLE_LONG NOMBRE_LARGO,  CT.EFF_STATUS ESTADO_EVENTO,  CL.INSTITUTION INSTITUCION,  CL.ACAD_GROUP GRUPO_ACADEMICO,  CL.CATALOG_NBR,  CL.START_DT FECHA_INICIAL,  CL.END_DT FECHA_FIN FROM  PS_CRSE_CATALOG CT,  PS_CLASS_TBL CL WHERE  CT.CRSE_ID = CL.CRSE_ID";

      if (p_reg > 0)
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.listadoEventos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoMaterias(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT   CRSE_ID CONSECUTIVO,   DESCR NOMBRE FROM   PS_CRSE_CATALOG WHERE   EFF_STATUS = 'A'";

      if (p_reg > 0)
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.listadoMaterias " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoCiclos(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT  STRM CONSECUTIVO,  DESCR NOMBRE  FROM  PS_TERM_TBL WHERE  ACAD_CAREER = 'CNED'";

      if (p_reg > 0)
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.listadoCiclos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoUsuarios(int p_reg)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PSOPRDEFN DE, PS_PERSONAL_DATA DT, PS_PRIORWORK_EXPER PE, PS_US_SOC_TBL CA";

      String consulta = " SELECT   DT.EMPLID CONSECUTIVO,   DT.FIRST_NAME_SRCH NOMBRES,   DT.LAST_NAME_SRCH APELLIDOS,   CA.DESCR CARGO" + strTablas + " WHERE" + "   DT.EMPLID = DE.EMPLID" + "   AND PE.EMPLID = DE.EMPLID" + "   AND CA.US_SOC_CD = PE.US_SOC_CD";

      if (p_reg > 0) {
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);
      }

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Consultas.getUsuarios " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Boolean autenticarUsuario(String usuario, String password)
  {
    if ((usuario != null) && (password != null) && (usuario.compareTo(password) == 0))
      return Boolean.valueOf(true);

    return Boolean.valueOf(false);
  }

  public static Vector listadoProfesiones(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT   US_SIC_CD CONSECUTIVO,   DESCR NOMBRE FROM   PS_US_SIC_TBL A WHERE   EFFDT = (   SELECT     MAX(EFFDT)   FROM     PS_US_SIC_TBL B   WHERE     A.US_SIC_CD = B.US_SIC_CD     AND B.EFFDT <= SYSDATE) AND LOWER(DESCR) != LOWER('otra')";

      if (p_reg > 0)
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);

      consulta = consulta + "  ORDER BY DESCR ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.listadoProfesiones " + e.toString());
    }
    return datos;
  }

  public static String consultarNombreProfesion(String strConsecutivo)
  {
    String strNombreProfesion = null;

    Vector datos = new Vector();
    try {
      String consulta = " SELECT   DESCR NOMBRE FROM   PS_US_SIC_TBL A WHERE A.US_SIC_CD = '" + strConsecutivo + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
      strNombreProfesion = ((Fila)datos.get(0)).getValor("NOMBRE");
    }
    catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.consultarNombreProfesion " + e.toString());
    }
    return strNombreProfesion;
  }

  public static Vector listadoCiudades(String codigo)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PS_PUJ_CIUDADES ";

      String consulta = " SELECT    CODIGO CONSECUTIVO,   NOMBRE" + strTablas + " WHERE" + "   NOT UPPER(NOMBRE) = 'DESCONOCIDA'" + "   AND DEP_CODIGO = '" + codigo + "'" + " ORDER BY NOMBRE ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.listadoCiudades " + e.toString());
    }
    return datos;
  }

  public static Vector listadoCiudades()
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PS_PUJ_CIUDADES A, PS_STATE_NAMES_TBL B";

      String consulta = " SELECT    A.CODIGO CONSECUTIVO,   A.NOMBRE,   A.DEP_CODIGO DEP_CONSECUTIVO " + strTablas + " WHERE" + "   NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + " ORDER BY A.DEP_CODIGO, A.NOMBRE ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.listadoCiudades " + e.toString());
    }
    return datos;
  }

  public static Vector consultarDptoPorCiudad(String strCiuConsecutivo)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PS_PUJ_CIUDADES A, PS_STATE_NAMES_TBL B";

      String consulta = " SELECT    B.STATE DEP_CONSECUTIVO    B.DESCR NOMBRE" + strTablas + " WHERE" + "   NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + "   A.CODIGO CONSECUTIVO= '" + strCiuConsecutivo + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.consultarDptoPorCiudad " + e.toString());
    }
    return datos;
  }

  public static Vector consultarCiudadPorNombre(String strNombre)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PS_PUJ_CIUDADES A, PS_STATE_NAMES_TBL B";

      String consulta = " SELECT    B.STATE DEP_CONSECUTIVO,   A.CODIGO CIU_CONSECUTIVO " + strTablas + " WHERE" + "   NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + "   AND LOWER(A.NOMBRE) = LOWER('" + strNombre + "')";

      datos = EjecutaConsulta.Ejecutar(consulta);

      if (datos.size() == 0) {
        consulta = " SELECT    B.STATE DEP_CONSECUTIVO,   A.CODIGO CIU_CONSECUTIVO " + strTablas + " WHERE" + "   NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + "   AND LOWER(A.NOMBRE) LIKE LOWER('%" + strNombre + "%')";

        datos = EjecutaConsulta.Ejecutar(consulta);
      }
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.consultarCiudadPorNombre " + e.toString());
    }
    return datos;
  }

  public static Vector listadoDepartamentos()
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT    STATE CONSECUTIVO,   DESCR NOMBRE FROM   PS_STATE_NAMES_TBL WHERE   COUNTRY = 'COL'   AND PROMPT_OK = 'Y'   AND NOT UPPER(DESCR) = 'DESCONOCIDO' ORDER BY DESCR ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.listadoDepartamentos " + e.toString());
    }
    return datos;
  }

  public static Vector listadoDepartamentosAcademicos()
  {
    return datosParaListas.getDepartamentosAcademicos();
  }

  public static Vector listadoGeneros()
  {
    return datosParaListas.getOtrosDatos("SEX");
  }

  public static Vector listadoEstadosCiviles()
  {
    return datosParaListas.getOtrosDatos("MAR_STATUS");
  }

  /**
   * @deprecated
   */
  public static Vector listadoNivelesAcademicos()
  {
    Vector datos = new Vector();
    Fila fGrad = new Fila();
    Fila uGrad = new Fila();
    try {
      fGrad.adicionar("CONSECUTIVO", "GRAD");
      fGrad.adicionar("NOMBRE", "Posgrado");
      uGrad.adicionar("CONSECUTIVO", "UGRD");
      uGrad.adicionar("NOMBRE", "Pregrado");
      datos.add(fGrad);
      datos.add(uGrad);
    }
    catch (Exception ex) {
    }
    return datos;
  }

  public static Vector getFacultades()
  {
    Vector datos = new Vector();
    try
    {
      String consulta = "SELECT   B.ACAD_ORG CONSECUTIVO, descrformal NOMBRE FROM PSTREENODE A, PS_ACAD_ORG_TBL B WHERE A.TREE_NAME='ACAD_DEPARTMENT' AND   A.TREE_NODE = B.DESCRSHORT AND   B.EFF_STATUS='A' AND   B.EFFDT = ( SELECT MAX(C.EFFDT)                   FROM PS_ACAD_ORG_TBL C                    WHERE B.INSTITUTION = C.INSTITUTION                   AND   B.DESCRSHORT = C.DESCRSHORT                   AND   C.EFFDT <= SYSDATE) AND   A.EFFDT = (SELECT MAX(D.EFFDT)                  FROM PSTREENODE D                  WHERE A.TREE_NODE_NUM = D.TREE_NODE_NUM                  AND  D.EFFDT <= SYSDATE) AND  A.TREE_NODE_NUM!=1 AND acad_org like 'FAC%'  ORDER BY descrformal ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de datosParaListas.getFacultades " + e.toString());
    }

    return datos;
  }

  public static Vector getDepartamentosAcademicos()
  {
    Vector datos = new Vector();
    try
    {
      String consulta = "SELECT  B.ACAD_ORG CONSECUTIVO, B.DESCR NOMBRE, A.PARENT_NODE_NAME FAC_CONSECUTIVO FROM PSTREENODE A, PS_ACAD_ORG_TBL B WHERE A.TREE_NAME='ACAD_DEPARTMENT' AND   A.TREE_NODE = B.DESCRSHORT AND   B.EFF_STATUS='A' AND   B.EFFDT = ( SELECT MAX(C.EFFDT)                   FROM PS_ACAD_ORG_TBL C                   WHERE B.INSTITUTION = C.INSTITUTION                   AND   B.DESCRSHORT = C.DESCRSHORT                   AND   C.EFFDT <= SYSDATE) AND   A.EFFDT = (SELECT MAX(D.EFFDT)                  FROM PSTREENODE D                  WHERE A.TREE_NODE_NUM = D.TREE_NODE_NUM                  AND  D.EFFDT <= SYSDATE) AND  A.TREE_NODE_NUM!=1 ORDER BY B.DESCR";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de getDepartamentosAcademicos " + e.toString());
    }

    return datos;
  }

  public static Vector getTiposDocumentos()
  {
    Vector datos = new Vector();
    try
    {
      String consulta = " SELECT NATIONAL_ID_TYPE CONSECUTIVO, DESCR NOMBRE FROM PS_NID_TYPE_TBL  WHERE COUNTRY='COL' ORDER BY NOMBRE";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de datosParaListas.getTiposDocumentos " + e.toString());
    }

    return datos;
  }

  public static Vector getTitulosAcademicos()
  {
    Vector datos = new Vector();
    try
    {
      String consulta = " SELECT DEGREE CONSECUTIVO, DESCRFORMAL NOMBRE  FROM PS_DEGREE_TBL A  WHERE A.EFF_STATUS='A'  AND  A.EFFDT = (SELECT MAX(B.EFFDT)  FROM PS_DEGREE_TBL B  WHERE A.DEGREE = B.DEGREE  AND   B.EFFDT <= SYSDATE)  ORDER BY NOMBRE";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de datosParaListas.getProfesiones " + e.toString());
    }

    return datos;
  }

  public static Vector getUniversidades(String p_descripcion, int p_reg)
  {
    Vector datos = new Vector();
    try
    {
      String consulta = " SELECT EX.EXT_ORG_ID CONSECUTIVO, EX.DESCR50 NOMBRE FROM PS_EXT_ORG_TBL EX  WHERE EX.EXT_ORG_TYPE='SCHL'  AND   EX.LS_SCHOOL_TYPE='UNI'  AND   EX.EFF_STATUS='A'  AND   EX.EFFDT = (SELECT MAX(EX2.EFFDT)  FROM PS_EXT_ORG_TBL EX2  WHERE EX.EXT_ORG_ID =EX2.EXT_ORG_ID  AND   EX.EXT_ORG_TYPE=EX2.EXT_ORG_TYPE  AND   EX.LS_SCHOOL_TYPE=EX2.LS_SCHOOL_TYPE  AND   EX2.EFFDT<=SYSDATE)  AND EX.DESCR50 LIKE ('%" + p_descripcion + "%')";

      if (p_reg > 0) {
        consulta = consulta + " AND ROWNUM <= " + p_reg + " ORDER BY NOMBRE ";
      }
      else
        consulta = consulta + " ORDER BY NOMBRE";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      System.out.println("Error: en la consulta de datosParaListas.getUniversidades " + e.toString());
    }

    return datos;
  }

  public static String consultarNombreUniversidad(String strConsecutivo)
  {
    Vector datos = new Vector();
    String strNombreUniversidad = null;
    try
    {
      String consulta = " SELECT EX.DESCR50 NOMBRE FROM PS_EXT_ORG_TBL EX  WHERE EX.EXT_ORG_ID = '" + strConsecutivo + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
      strNombreUniversidad = ((Fila)datos.get(0)).getValor("NOMBRE");
    }
    catch (Exception e) {
      System.out.println("Error: en la consulta de Listados.consultarNombreUniversidad " + e.toString());
    }

    return strNombreUniversidad;
  }

  public static Vector getCarrerasPregrado()
  {
    Vector vResultado = new Vector();
    try
    {
      String strTablas = " FROM PS_ACAD_PROG_TBL";

      String strSql = "SELECT acad_prog CONSECUTIVO, descr NOMBRE" + strTablas + " WHERE acad_career = 'UGRD'" + " ORDER BY descr";

      vResultado = EjecutaConsulta.Ejecutar(strSql);
    }
    catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de getCarrerasPregrado " + e.toString());
    }

    return vResultado;
  }

  public static Vector getCarrerasPostgrado()
  {
    Vector vResultado = new Vector();
    try
    {
      String strTablas = " FROM PS_ACAD_PROG_TBL";

      String strSql = "SELECT acad_prog CONSECUTIVO, descr NOMBRE" + strTablas + " WHERE acad_career = 'GRAD'" + " ORDER BY descr";

      vResultado = EjecutaConsulta.Ejecutar(strSql);
    }
    catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de getCarrerasPostgrado " + e.toString());
    }

    return vResultado;
  }
}